#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

int n;
bool v[16777220];

struct status
{
    char arr[12];
    int step;

    status() {
        memset(arr, 0, sizeof(arr));
        step = 0;
    }

    void move(int i) {
        if (i == 0)
            swap(arr[0], arr[1]);
        else if (i == 1) {
            char temp = arr[0];
            for (int i=1; i<n; i++) {
                arr[i-1] = arr[i];
            }
            arr[n-1]  = temp;
        } else {
            cout << "error!" <<endl;
            return;
        }
        step++;
    }
} start, target;

// 进制转换
int hs(status sta) {
    int ans = 0;
    for (int i=0; i<n; i++) {
        // 因为该题只有4种选择，因此转换成四进制
        ans *= 4;
        switch (sta.arr[i]) {
        case 'A':
            ans += 0;
            break;
        case 'T':
            ans += 1;
            break;
        case 'C':
            ans += 2;
            break;
        case 'G':
            ans += 3;
            break;
        default:
            cout << "Error!" << endl;
            break;
        }
    }
    return ans;
}
// 此题并非全排列，无法使用康托
// int cantor(int a[], int len) {
//     int ans = 0;
//     for (int i=0; i<len; i++) {
//         int count=0, index=1, f=1;
//         for (int j=i+1; j<len; j++) {
//             if (a[i] > a[j]) {
//                 count++;
//                 f *= index++;
//             }
//         }
//         ans += count * f;
//     }
//     return ans;
// }

int main() {

    /*
        LLT Area
    */

    // int a[3] = {0};
    // for(int i=1; i<5; i++)
    //     for(int j=1; j<5; j++)
    //         for(int k=1; k<5; k++) {
    //             a[0] = i;
    //             a[1] = j;
    //             a[2] = k;
    //             for (int ii=0; ii<3; ii++) {
    //                 cout << a[ii] << " ";
    //             }
    //             cout << ": " << cantor(a, 4) << endl;
    //         }

    while(cin >> n, n) {
        for (int i=0; i<n; i++)
            cin >> start.arr[i];
        for (int i=0; i<n; i++)
            cin >> target.arr[i];

        queue<status> q;
        memset(v, false, sizeof(v));
        int tg = hs(target);
        bool flag = false;
        
        q.push(start);
        v[hs(start)] = true;

        if (tg == hs(start)) {
            cout << 0 << endl;
            break;
        }

        while(!q.empty()) {
        	if(flag) break;
            for (int i=0; i<2; i++) {
                status front = q.front();
                front.move(i);
                if (v[hs(front)])
                    continue;
                if (tg == hs(front)) {
                    cout << front.step << endl;
                    flag = true;
                }
                v[hs(front)] = true;
                q.push(front);
            }
            q.pop();
        }
    }

    return 0;
}
